from fontTools.ttLib import TTFont
# Image 图  ImageDraw 画笔  ImageFont指定字体
# 使用指定的字体 将字符绘制到一张 图张
from PIL import Image, ImageDraw, ImageFont
import io
from ddddocr import DdddOcr

ocr = DdddOcr(show_ad=False)


# 建立 字符映射

# 加入 只有0-9 10个数字 可以手动观察映射关系
# font_maps = {
#     "": 7,
#     "": 0,
#     "": 1
# }

font_maps = {

}

# 指定解析的字体文件
font = TTFont("./static/fonts/file")

# 2. 指定绘制的字体文件
img_font = ImageFont.truetype("./static/fonts/file", size=25)
for code, name in font.getBestCmap().items():
    # 将第一个踢掉没有用
    if code == 120:
        continue
    else:

        # 将字符 使用特定的字体文件 渲染到图上
        print(code, chr(code), name)

        # 1. 创建32*32 白色 RGB图
        img = Image.new("RGB", (32, 32), (255,255,255))

        # 3.绘制图形到 图片
        draw = ImageDraw.Draw(img)
        draw.text((0, 0), chr(code), (0,0,0), font=img_font)


        # 4.保存图片 到本地 或者字节流
        # img.save(f'./static/fonts/imgs/{code}.png', "png")

        img_bytes = io.BytesIO()
        img.save(img_bytes, format="JPEG")
        # print(img_bytes.getvalue())

        r = ocr.classification(img_bytes.getvalue())
        # print(code, "识别结果", r)
        # font_maps[hex(code)] = r
        font_maps[code] = r
print(f"字体映射表")
print(font_maps)